[org 0x7C00]       ; BIOS 将引导扇区加载到 0x7C00 处

start:
    mov si, msg    ; 将字符串地址存入 SI 寄存器
    call print     ; 调用打印函数
    jmp $          ; 无限循环（挂起）

print:
    mov ah, 0x0E   ; BIOS 中断 0x10 的功能号（打印字符）
.next_char:
    lodsb          ; 从 SI 加载字符到 AL，并递增 SI
    cmp al, 0      ; 检查字符串结束符（\0）
    je .done
    int 0x10       ; 调用 BIOS 中断打印字符
    jmp .next_char
.done:
    ret

msg db "Hello, World!", 0   ; 要打印的字符串

times 510-($-$$) db 0       ; 填充剩余空间（确保总大小为 512 字节）
dw 0xAA55                   ; 引导扇区结束标志